package ca.etsmtl.log720.lab1;
import java.lang.*;

import java.util.ArrayList;

public class BanqueDossiersImpl extends BanqueDossiersPOA {
	
	private CollectionDossierImpl dossiers;
	private int currentid = 0;
	
	public BanqueDossiersImpl()
	{
		dossiers = new CollectionDossierImpl();
	}
	
	public CollectionDossier dossiers()
	{
		try {
			/*
			// Recuperer le POA cree dans le serveur
			POA rootpoa = Server._poa; //TOCHECK

			// Activer l'objet et retourne l'objet CORBA
			org.omg.CORBA.Object obj = rootpoa
					.servant_to_reference(dossiers);

			// Retourner une Collection d'etudiant
			return CollectionDossierHelper.narrow(obj);
			*/
			return null; //TODO
		} catch (Exception e) {
			System.out.println("Erreur retour de l'objet CollectionInfraction : "	+ e);
			return null;
		}
	}
	
	public CollectionDossier trouverDossiersParPlaque(String noPlaque)
	{
		CollectionDossierImpl dossiersRetour = new CollectionDossierImpl();
		CollectionDossier collectionDossier = null;
		for(int i=0; i<dossiers.getListeDossier().size(); i++)
		{
			if(dossiers.getListeDossier().get(i).noPlaque() == noPlaque)
				dossiersRetour.getListeDossier().add(dossiers.getListeDossier().get(i));
				collectionDossier = (CollectionDossier) dossiersRetour.getListeDossier();
		}
		/*
		// R�cup�rer le POA cr�� dans le serveur
		POA rootpoa = Server._poa; //TOCHECK

		// Activer l'objet et retourne l'objet CORBA
		org.omg.CORBA.Object obj = rootpoa
				.servant_to_reference(dossiersRetour);

		// Retourner une Collection d'etudiant
		return CollectionDossierHelper.narrow(obj);
		*/
		return collectionDossier ; //TODO
	}
	
	public CollectionDossier trouverDossiersParNom(String nom, String prenom)
	{
		CollectionDossierImpl dossiersRetour = new CollectionDossierImpl();
		for(int i=0; i<dossiers.getListeDossier().size(); i++)
		{
			if(dossiers.getListeDossier().get(i).prenom() == prenom && dossiers.getListeDossier().get(i).nom()==nom)
				dossiersRetour.getListeDossier().add(dossiers.getListeDossier().get(i));
		}
		/*
		// R�cup�rer le POA cr�� dans le serveur
		POA rootpoa = Server._poa; //TOCHECK

		// Activer l'objet et retourne l'objet CORBA
		org.omg.CORBA.Object obj = rootpoa
				.servant_to_reference(dossiersRetour);

		// Retourner une Collection d'etudiant
		return CollectionDossierHelper.narrow(obj);
		*/
		return null; //TODO
	}
	
	public Dossier trouverDossierParPermis(String noPermis)
	{
		DossierImpl dossierRetour = null;
		for(int i=0; i<dossiers.getListeDossier().size(); i++)
		{
			if(dossiers.getListeDossier().get(i).noPermis() == noPermis)
				dossierRetour = dossiers.getListeDossier().get(i);
		}
		if(dossierRetour==null)
			return null;
		
		/*
		// R�cup�rer le POA cr�� dans le serveur
		POA rootpoa = Server._poa; //TOCHECK

		// Activer l'objet et retourne l'objet CORBA
		org.omg.CORBA.Object obj = rootpoa
				.servant_to_reference(dossierRetour);

		// Retourner une Collection d'etudiant
		return DossierHelper.narrow(obj);
		*/
		return null; //TODO
	}
	
	public Dossier trouverDossierParId(int id)
	{
		if(dossiers.getListeDossier().size()<id)
			return null;
		DossierImpl dossierRetour = dossiers.getListeDossier().get(id);
		
		/*
		// R�cup�rer le POA cr�� dans le serveur
		POA rootpoa = Server._poa; //TOCHECK

		// Activer l'objet et retourne l'objet CORBA
		org.omg.CORBA.Object obj = rootpoa
				.servant_to_reference(dossierRetour);

		// Retourner une Collection d'etudiant
		return DossierHelper.narrow(obj);
		*/
		return null; //TODO
	}
	
	public void ajouterDossier(String nom, String prenom, String noPermis, String noPlaque)
	{
		DossierImpl newDossier = new DossierImpl(currentid++, nom, noPermis, noPlaque, prenom, 0);
		dossiers.getListeDossier().add(newDossier);
	}
	
	public void ajouterInfractionAuDossier(int idDossier, int idInfraction)
	{
		dossiers.getListeDossier().get(idDossier).ajouterInfractionAListe(idInfraction);
		//TODO DANS LAPPLICATION CLIENTVOITURE A LAPPEL DE CETTE METHODE: G�rer le niveau en utilisant la m�thode trouverInfractionParId(idInfraction) de BanqueInfraction, en r�cup�rant son niveau niveauInfraction, et en appelant :
		//dossiers.getListeDossier().get(idDossier).miseAJourNiveau(niveauInfraction);
	}
	
	public void ajouterReactionAuDossier(int idDossier, int idReaction)
	{
		dossiers.getListeDossier().get(idDossier).ajouterReactionAListe(idReaction);
		//TODO DANS LAPPLICATION CLIENTVOITURE A LAPPEL DE CETTE METHODE :G�rer le niveau en utilisant la m�thode trouverReactionParId(IdReaction) de BanqueReaction, en r�cup�rant son niveau niveauReaction, et en appelant :
		//dossiers.getListeDossier().get(idDossier).miseAJourNiveau(niveauReaction);
	}
	

}
